Three-dimensional taxonomy server for identifying a location based on a three-dimensional position of a client device

ABSTRACT

A three-dimensional taxonomy server is operative to identify the location of a client device based on three-dimensional positional information received from the client device. The three-dimensional positional information may include global positioning system coordinates, an Internet Protocol address, cellular network information, or any other type of three-dimensional positional information. The three-dimensional taxonomy server may operate in conjunction with another server, such as an advertising server or business search server, to deliver contextual content based on the location of the client device. The contextual content may include a targeted advertisement, a targeted search result, or other type of contextual content.

CROSS REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 12/650,765, filed Dec. 31, 2009, the disclosure of which isincorporated herein by reference.

BACKGROUND

1. Technical Field

This application relates to identifying a location usingthree-dimensional positional information and, in particular, to athree-dimensional taxonomy server that identifies the location based ona three-dimensional position of a client device.

2. Related Art

A client device, such as a cellular phone, personal display assistant,or other client device, may be able to identify its geographic location.For example, the client device may include a global positioning system(“GPS”) module that provides two-dimensional positional information,such as latitude and longitude, of the client device. The client devicemay, in turn, provide this information to a server or other host devicefor identifying the location of the client device.

The server or other host device may use the two-dimensional positionalinformation to generate context data for consumption by the clientdevice. The context data may take the form of an on-line advertisement,targeted search result, or other type of contextual data. However, withthe increased popularity of client devices and the increaseddistribution of GPS modules, client devices are appearing in areas whereidentifying the location of the client device can be problematic, suchas in multi-story buildings or densely populated areas. In theseproblematic situations, identifying the location of the client devicebased on the two-dimensional positional information is insufficient.

SUMMARY

A system for identifying a location based on a three-dimensionalposition of a client device comprises a memory storage device thatincludes a three-dimensional taxonomy database. The three-dimensionaldatabase has a plurality of three-dimensional taxonomy records such thateach three-dimensional taxonomy record specifies a correspondinglocation. Moreover, a selected one of the plurality of three-dimensionaltaxonomy records includes a three-dimensional taxonomy record identifierthat identifies the at least one three-dimensional taxonomy record andthree-dimensional geographic location information that identifies ageographic position of the location corresponding to the at least onethree-dimensional taxonomy record.

The system also includes a processor operative to receivethree-dimensional positional information from a client device thatidentifies a three-dimensional position of the client device, extractelevation information from the three-dimensional positional informationthat identifies the elevation of the client device, and identify theselected three-dimensional taxonomy record based on mapping theelevation information of the client device to the three-dimensionalgeographic location information of the selected three-dimensionaltaxonomy record. Furthermore, the processor may be further operative tooutput the three-dimensional taxonomy record identifier of the selectedthree-dimensional taxonomy record. Alternatively, or in addition, theprocessor may be further operative to output a data streamrepresentative of a renderable display indicative of the location basedon the extracted three-dimensional taxonomy record identifier.

In addition, in one implementation, the three-dimensional geographiclocation information may include global positioning system coordinatesand at least one global positioning system coordinate of the globalpositioning system coordinates may be a coordinate indicative ofelevation above sea level. Moreover, the processor may be furtheroperative to translate the elevation information to translated elevationinformation comprising an elevation value indicative of the clientdevice's elevation above sea level and map the elevation information tothe three-dimensional geographic location information of the selectedthree-dimensional taxonomy record by mapping the translated elevationinformation to the at least one global positioning system coordinate.

In another implementation, the location identified by thethree-dimensional taxonomy record may be a first location thethree-dimensional geographic location information may comprise relativeheight information that identifies the height of the location relativeto a second location. In this alternative implementation, the processormay be further operative to translate the elevation information totranslated elevation information comprising a relative elevation valueindicative of the client device's elevation relative to the secondlocation, and map the elevation information to the three-dimensionalgeographic information of the selected three-dimensional taxonomy recordby mapping the translated elevation information to the relative heightinformation.

Moreover, in the preceding alternative implementation, the secondlocation may be a building comprising a plurality of floors and therelative elevation value may indicate that the first location is locatedon a selected floor of the plurality of floors. In addition, thetranslated elevation information may indicate that the client device islocated on the selected floor of the building, and the at least onethree-dimensional taxonomy record may be identified when the relativeelevation value is mapped to the relative height information.

In yet another implementation, the system may also include anadvertising server operative to deliver a targeted advertisement. Theadvertising server may include a keyword-advertisement database having aplurality of advertisement records, wherein at least one of theadvertisement records of the plurality of advertisement recordsrepresents the targeted advertisement. The advertising server may befurther operative to identify the at least one advertisement recordbased on the extracted three-dimensional taxonomy record identifier, andto deliver the targeted advertisement to the client device based on theidentified at least one advertisement record.

In a further implementation, the system may also include a businesssearch server operative to deliver a search result comprising at leastone business. The business search server may have a business-keyworddatabase including a plurality of business records, wherein at least onebusiness record of the plurality of business records represents the atleast one business. The business search server may be further operativeto identify the at least one business record based on the extractedthree-dimensional taxonomy record identifier, and to deliver the searchresult comprising the at least one business to the client device basedon the identified at least one business record.

A method for identifying a location based on a three-dimensionalposition of a client device may include establishing a three-dimensionaltaxonomy database, the database having a plurality of three-dimensionaltaxonomy records, each three-dimensional taxonomy record specifying acorresponding location. A selected one of the plurality ofthree-dimensional taxonomy records comprises a three-dimensionaltaxonomy record identifier that identifies the at least onethree-dimensional taxonomy record, and three-dimensional geographiclocation information that identifies a geographic position of thelocation corresponding to the at least one three-dimensional taxonomyrecord.

The method further includes receiving three-dimensional positionalinformation from a client device that identifies a three-dimensionalposition of the client device; extracting elevation information from thethree-dimensional positional information that identifies the elevationof the client device; identifying the selected three-dimensionaltaxonomy record based on mapping the elevation information of the clientdevice to the three-dimensional geographic location information of theselected three-dimensional taxonomy record; and, outputting thethree-dimensional taxonomy record identifier of the selectedthree-dimensional taxonomy record. The method may also includeoutputting a data stream representative of a renderable displayindicative of the location based on the extracted three-dimensionaltaxonomy record identifier.

In one implementation, the three-dimensional geographic locationinformation may comprise global positioning system coordinates whereinat least one global positioning system coordinate of the globalpositioning system coordinates is a coordinate indicative of elevationabove sea level. The method may further include translating theelevation information to translated elevation information comprising anelevation value indicative of the client device's elevation above sealevel; and, mapping the elevation information to the three-dimensionalgeographic location information of the selected three-dimensionaltaxonomy record by mapping the translated elevation information to theat least one global positioning system coordinate.

In another implementation, the location identified by thethree-dimensional taxonomy record may be a first location, and thethree-dimensional geographic location information may comprise relativeheight information that identifies the height of the location relativeto a second location. In this alternative implementation, the method mayinclude translating the elevation information to translated elevationinformation comprising a relative elevation value indicative of theclient device's elevation relative to the second location; and, mappingthe elevation information to the three-dimensional geographicinformation of the selected three-dimensional taxonomy record by mappingthe translated elevation information to the relative height information.

Further, based on the preceding implementation, the second location maybe a building comprising a plurality of floors and the relativeelevation value may indicate that the first location is located on aselected floor of the plurality of floors. Furthermore, the translatedelevation information may indicate that the client device is located onthe selected floor of the building, and that the at least onethree-dimensional taxonomy record is identified when the relativeelevation value is mapped to the relative height information.

In yet another implementation, the method may include establishing anadvertising server operative to deliver a targeted advertisement. Theadvertising server may include a keyword-advertisement database having aplurality of advertisement records, wherein at least one of theplurality advertisement records of the plurality of advertisementrecords represents the targeted advertisement. Moreover, the method mayinclude identifying the at least one advertisement record based on theextracted three-dimensional taxonomy record identifier; and, deliveringthe targeted advertisement to the client device based on the identifiedat least one advertisement record.

In a further implementation, the method may include establishing abusiness search server operative to deliver a search result comprisingat least one business. The business search server may have abusiness-keyword database including a plurality of business records,wherein at least one of the business records of the plurality ofbusiness records represents the at least one business. In addition, themethod may include identifying the at least one business record based onthe extracted three-dimensional taxonomy record identifier; and,delivering the search result comprising the at least one business to theclient device based on the identified at least one business record.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates one example of client devices in communication with athree-dimensional taxonomy server.

FIG. 2 illustrates one example of the three-dimensional taxonomy serverillustrated in FIG. 1.

FIG. 3A. illustrates one example of a three-dimensional taxonomy record.

FIG. 3B. illustrates another example of a three-dimensional taxonomyrecord.

FIG. 3C. illustrates a further example of a three-dimensional taxonomyrecord.

FIG. 4 illustrates one example of a three-dimensional geographicadvertising system in communication with a client device.

FIG. 5 illustrates one example of message flow for the three-dimensionalgeographic advertising system of FIG. 4.

FIG. 6 illustrates one example of a three-dimensional geographicbusiness search system in communication with a client device.

FIG. 7 illustrates one example of message flow for the three-dimensionalgeographic business search system of FIG. 6.

Aspects, features and advantages of the invention will be appreciatedwhen considered with reference to the following description of preferredembodiments and accompanying figures. The same reference numbers indifferent drawings may identify the same or similar elements.Furthermore, the following description is not limiting; the scope of theinvention is defined by the appended claims and equivalents.

DETAILED DESCRIPTION

FIG. 1 shows one example of a three-dimensional taxonomy server 102 incommunication with one or more client devices 104-110. The clientdevices 104-110 may be any type of client device, such as a cellularphone, personal display assistant, portable music player, laptop ordesktop computer, or any other type of client device now known or laterdeveloped.

The client devices 104-110 communicate with the three-dimensionaltaxonomy server 102 through a network 112. The network 112 may be anytype of network, such as a wireless network, a wired network, or acombination of wireless and wired networks. One example of a network isa Wide Area Network (“WAN”), such as the Internet. The Wide Area Networkmay include an information-sharing model for sharing information, suchas the World Wide Web. Another example of a network is a Local AreaNetwork (“LAN”). Other types of networks are also possible.

The network 112 may employ a variety of protocols for communicatinginformation between the client devices 104-110 and the three-dimensionaltaxonomy server 102. For example, the network 112 may employtransmission protocols, such as the Transmission Control Protocol(“TCP”), packet-switched protocols, such as the Internet Protocol(“IP”), wireless protocols, such as 802.11b/g/n, Bluetooth, and WiMAX,voice communication protocols, such as the H.323 protocol, or any otherprotocol now known or later developed.

The client devices 104-110 are equipped to provide three-dimensionalpositional information to the three-dimensional taxonomy server 102. Inone implementation, the client device 104 is equipped to receive GPScoordinates from one or more GPS satellites 114. For example, the clientdevice 104 may receive GPS coordinates from four or more GPS satellites114. The client device may also receive GPS coordinates from analternative number of GPS satellites 114. The GPS coordinates mayinclude a number of coordinates including a latitude coordinate, alongitude coordinate, an elevation coordinate or any other type ofcoordinate. The elevation coordinate may be based on a mathematicalmodel representing the Earth's near-spherical surface. For example, theGPS module may determine the elevation coordinate based on a referenceellipsoid that approximates the Earth's surface. Alternatively, the GPSmodule may determine the elevation coordinate using orthometric height,which is generally considered the height above the geoid. The geoid maybe determined by the Earth's gravity at the location of the clientdevice 104 and approximated by mean sea level. The elevation coordinatebased on the reference ellipsoid may be the same, or different from, theelevation coordinate approximated by mean sea level.

Alternatively, the client device 104 itself may determine the elevationcoordinate or three-dimensional positional information. For example, theclient device 104 may calculate speed and direction of movement todetermine three-dimensional position information. The client device 104may include one or more gyroscopes, accelerometers, altimeters,barometers, or other sensing devices, and, based on the measurementsfrom those devices, the client device 104 may ascertain its ownthree-dimensional positional information. As one example, where theclient device 104 is located in an elevator and moves in an upwarddirection for thirty seconds at a determinable speed, the client device104 may be operative to calculate its elevation relative to its previouslocation, such as the ground floor of the elevator. Other mechanisms ordevices for providing the elevation coordinate may also be incommunication with the client device 104. In another implementation, theclient device 106 is equipped to receive an IP address from a wired orwireless network 116, and the client device 106 may provide the IPaddress to the three-dimensional taxonomy server 102 as, or part of, thethree-dimensional positional information. The IP address may be any typeof network address, such as an IPv4 address, an IPv6 address, or acombination thereof. As discussed later below, the three-dimensionaltaxonomy server 102 may be configured to identify the location of theclient device 106 based on the provided IP address, for instance byreverse geocoding.

In yet a third implementation, the client device 108 may be incommunication with one or more cellular networks 118 and employ mobilepositioning technology to provide the three-dimensional positionalinformation to the three-dimensional taxonomy server 102. The mobilepositioning technology may include measuring power levels and antennapatterns to determine the location of the client device 108.

More particularly, the client device 108 may employ, or rely on, one ormore types of localization-based systems to assist three-dimensionaltaxonomy server 102 in determining the location of the client device108. Examples of a localization-based system include, but are notlimited to, a network-based localization system, a handset-basedlocalization system, or a combination of network-based and handset-basedlocalization systems. In general, a network-based localization systemfocuses on using a telecommunication service provider's networkinfrastructure to identify the location of the handset. In contrast, ahandset-based localization system focuses on software installed, orhardware located, on the client device 108 to calculate the location ofthe client device 108 through cell identification, signal strengths ofthe home and neighboring cells, and/or latitude and longitudecoordinates acquired by GPS technology. The calculated location may thenbe sent to the three-dimensional taxonomy server 102 as, or part of, thethree-dimensional positional information. A hybrid-based localizationsystem employs both network-based and handset-based techniques tocalculate the location of the client device 108, such as Assisted GPS.

In yet another implementation, a client device 110 may receive thethree-dimensional position information from a user 120. For example, theuser 120 may input the local address to the client device 110 or theuser 120 may input latitudinal coordinates, longitudinal coordinates,and elevation to the client device 110. In another example, thethree-dimensional taxonomy server 102 may employ a feedback loop tocollect and refine three-dimensional positional information orthree-dimensional geographic information for a location. One example ofusing a feedback loop to refine three-dimensional positional informationor three-dimensional geographic information is discussed with referenceto FIGS. 6-7. In summary, the client device 110 may receive user inputfrom a user 120 to provide the three-dimensional positional informationto the three-dimensional taxonomy server 102.

Moreover, any one or combination of the above techniques may be used toprovide three-dimensional positional information of a client device tothe three-dimensional taxonomy server 102. For example, a client device104 may initially acquire GPS coordinates from one or more GPSsatellites 114 to form baseline or initial three-dimensional positionalinformation. The baseline or initial three-dimensional positionalinformation may then be supplemented, or augmented by, additionalinformation acquired from local networks 116, cellular networks 118,and/or a user 120. For example, the user 120 may particularly define theelevation information of the three-dimensional positional information ifthe baseline or initial elevation information is incomplete, inaccurate,or missing. The user-provided elevation information may be absoluteelevation information regarding the client device 104, such as thenumber of feet above sea level, or may be relative elevationinformation, such as the floor of a building where the client device 104is located in a multi-story building. Other combinations of thetechniques described above are also possible.

FIG. 2 illustrates one example of the three-dimensional taxonomy server102 in communication with a client device 218. The client device 218 maybe the same, or different from, one or more of the client devices104-110 shown in FIG. 1. The three-dimensional taxonomy server 102 isoperative to identify the location of the client device 218 based on thethree-dimensional positional information received from the client device218. In addition, the three-dimensional taxonomy server 102 may befurther operative to add, modify, or remove location informationpreviously stored in the three-dimensional taxonomy server 102.

In one implementation, the three-dimensional taxonomy server 102includes a memory storage device 202, an input interface 206, aprocessor 208, and an output interface 210. The memory storage device202 may be any type of memory storage device, such as a hard drive orRandom Access Memory (“RAM”), or any other computer-readable medium nowknown or later developed. The input interface 206 may be any type ofinput interface, such as a Universal Serial Bus (“USB”) interface, aserial interface, a parallel interface, a network interface (such asEthernet), or any other type of input interface now known or laterdeveloped. The output interface 210 may be any type of output interface,such as a USB interface, a serial interface, a parallel interface, aHigh-Definition Multimedia Interface (“HDMI”), a Digital VisualInterface (“DVI”), a network interface, an optical fiber interface (suchas TOSLINK), or any other output interface now known or later developed.

The processor 208 may be any type of processor, such as a hardwareprocessor, a software processor, or a combination. The processor 208communicates inputs received from the input interface 206 to the memorystorage device 202. Similarly, the processor 208 communicates outputsfrom the memory storage device 202 to the output interface 210. Inaddition, the processor 208 may facilitate the manipulation of dataprovided to or received from one or more of the modules and databaseresiding in the memory storage device 202.

In one implementation, the memory storage device 202 includes apresentation access module 212, a three-dimensional taxonomy database214, and a translation module 216. The presentation access module 212,the three-dimensional taxonomy database 214, and/or the translationmodule 216 may be implemented in software, hardware, or a combinationthereof. As examples of software, the presentation access module 212,the three-dimensional taxonomy database 214, and/or the translationmodule 216 may be implemented in a computer programming language, suchas C, C++, C#, Java or other computer programming language now known orlater developed. As examples of hardware, one or more of thepresentation access module 212, the three-dimensional database 214,and/or translation module 216 may be implemented as a separate processoror as a separate computer in communication with the three-dimensionaltaxonomy server 102.

The presentation module 212 facilitates the input and output of data tothe three-dimensional taxonomy database 214. In one implementation, thepresentation module 212 receives three-dimensional positionalinformation from the client device 218 that identifies thethree-dimensional position of the client device. As discussed above, thepresentation access module 212 may receive the three-dimensionalpositional information via the processor 208 through the input interface206. The three-dimensional positional information from the client device218 may then be used as input to the three-dimensional taxonomy database214 to determine the location of the client device 218. Moreover, thethree-dimensional positional information from the client device 218 maybe used to update or modify the information stored by thethree-dimensional taxonomy database 214.

The three-dimensional taxonomy database 214 is operative to storethree-dimensional geographic location information about one or morelocations. The three-dimensional geographic location information maydescribe the geographic location of a location, such as a business,retailer, point of interest, or other location. Similar to thethree-dimensional positional information, the three-dimensionalgeographic location information may include global positioning systemcoordinates, one or more IP addresses, cellular network information,and/or previously-provided user input about a location. As discussedwith reference to FIGS. 3A and 3B, the three-dimensional taxonomydatabase 214 may store the three-dimensional geographic locationinformation in one or more three-dimensional taxonomy records.

FIG. 3A shows one example of a three-dimensional taxonomy record 302that specifies a corresponding location. The three-dimensional taxonomyrecord 302 may include one or more three-dimensional taxonomy recordfields 304-316 for specifying the corresponding location.

In one implementation, the three-dimensional taxonomy record 302includes a three-dimensional taxonomy record identifier field 304, abusiness name field 306, an address information field 308, a latitudefield 310, a longitude field 312, a floor field 314, and a detailedinformation field 316.

Alternative or additional three-dimensional taxonomy record fields mayalso be possible for a three-dimensional taxonomy record. For example,FIG. 3B shows another example of a three-dimensional taxonomy record 318that specifies a corresponding location. The three-dimensional taxonomyrecord 318 includes a three-dimensional taxonomy record identifier field320, a business name field 322, an address information field 324, alatitude field 326, a longitude field 328, an elevation field 330, and adetailed information field 332. As another example, FIG. 3C shows athird example of a three-dimensional taxonomy record 334 that includes athree-dimensional taxonomy record identifier field 336, a business namefield 338, an address information field 340, a latitude field 342, alongitude field 344, an IP address field 346, and a detailed informationfield 348.

Table 1 below explains the data stored by each of the three-dimensionaltaxonomy record fields 304-316 and/or three-dimensional taxonomy recordfields 320-332.

TABLE 1 Three-dimensional Taxonomy Record Field Brief Explanation RecordIdentifier A unique alphanumeric identifier that identifies thethree-dimensional taxonomy record. Business Name Identifies the businessor point of interest name for the location corresponding to thethree-dimensional taxonomy record. Address Information Identifies theaddress for the business or the point of interest. Latitude Identifiesthe latitude for the business or the point of interest. The specificityof the latitude may vary according to business or point of interest.Longitude Identifies the longitude for the business or the point ofinterest. The specificity of the longitude may vary according to thebusiness or point of interest. Floor Identifies the floor of a buildingon which the business or point of interest resides. The floorthree-dimensional taxonomy record field may be populated according towhether the business or point of interest resides on a floor of abuilding. Elevation Identifies the elevation of the business or point ofinterest. The elevation field may or not be populated. The elevationfield may be approximate elevation, elevation above sea level, or anyother type of elevation. As discussed previously, one or moremathematical techniques may be used to approximate the elevation of thelocation corresponding to the three-dimensional taxonomy record. IPAddress Identifies the IP address of the business or point of interest.The IP address field may or not be populated. The IP address field maybe a specific IP address for the business or point of interest, ageneral subnet address, or any other type of address. DetailedInformation Populated with varying information, such as editorialcommentary, user reviews, descriptive information, or other information.The detailed information three- dimensional taxonomy record field mayalso point to another record, table, or database for additionalinformation regarding the location corresponding to thethree-dimensional taxonomy record.

The first example of a three-dimensional taxonomy record 302, the secondexample of a three-dimensional taxonomy record 318, and/or the thirdexample of a three-dimensional taxonomy record 334 may be configured tostore different components of three-dimensional geographic locationinformation for a corresponding location. For example, thethree-dimensional taxonomy record 302 is configured to store relativeheight information as part of the three-dimensional geographic locationinformation. The relative height information may identify the height ofthe location identified by the three-dimensional taxonomy record 302relative to a second location, such as a building. For example, thelocation may be a business operated on a selected floor of a multi-storyor multi-floor building, such as the third floor of the building, andthe relative height information may identify that the business islocated on the third floor of the building. As briefly described inTable 1 above, the floor three-dimensional taxonomy record field 314 isconfigured to store this relative height information.

In other implementation, the three-dimensional taxonomy may store afloor plan or floor map of the building in which the location islocated. The floor plan or floor map may be stored in a separate fieldof the three-dimensional taxonomy record or as part of another field,such as the detailed information three-dimensional taxonomy record field316/332/348. The floor plan or floor map may be referenced indetermining or ascertaining the floor on which the location is located.For example, an address may be used to identify the building in whichthe location is located, and then the floor plan or floor map may thenbe further referenced to more accurately determine the interior positionof the location.

As a different example to storing relative height information, athree-dimensional taxonomy record may store absolute or approximatedelevation. The three-dimensional taxonomy record 318 is configured tostore elevation information as part of the three-dimensional geographiclocation information. As previously discussed above, the elevationinformation may be based on a mathematical model representing theEarth's near-spherical surface. For example, the elevation informationmay be based on a reference ellipsoid that approximates the Earth'ssurface. Alternatively, the elevation information may be determined bythe Earth's gravity at the geographic location of the business or pointof interest, and approximated by mean sea level. The elevationinformation based on the reference ellipsoid may be the same, ordifferent from, the elevation information approximated by mean sealevel.

As yet another example to storing relative height information, athree-dimensional taxonomy record may store an IP address associatedwith the business or point of interest, such as an IP address assignedby an Internet Service Provider (“ISP”) or an IP address of the subneton which the business or point of interest resides. The IP address maybe any type of network address, such as an IPv4 address, an IPv6address, or a combination thereof. The three-dimensional taxonomy record334 is configured to store the IP address in the IP addressthree-dimensional taxonomy record field 346 as part of thethree-dimensional geographic location information.

Moreover, a three-dimensional taxonomy record may include relativeinformation, approximated or absolute elevation information, or IPaddress information. For example, a three-dimensional taxonomy recordmay include any combination of the data fields shown in FIGS. 3A-3C and,more particularly, any combination of the floor three-dimensionaltaxonomy record field 314, elevation three-dimensional taxonomy recordfield 330, and IP address three-dimensional taxonomy record field 346.

Turning back to FIG. 2, the three-dimensional taxonomy server 102includes a translation module 216 operative to translate elevationinformation received from the client device 218 based on the data fieldsof the three-dimensional taxonomy records stored in thethree-dimensional taxonomy database 214. For example, whenthree-dimensional taxonomy server 102 initially receivesthree-dimensional positional information from the client device 218, theprocessor 208 may extract elevation information from thethree-dimensional positional information. Depending on the components ofthe three-dimensional positional information transmitted by the clientdevice 218, the elevation information may include relative elevationinformation, approximated elevation information, one or more IPaddresses, cellular network information, or any other components.

In one implementation, the translation module 216 translates theapproximated elevation information of the client device 218 to arelative elevation value for the location of the client device 218. Forexample, the latitude and longitude of the client device 218 maycorrespond to one or more three-dimensional taxonomy records thatindicate that the client device 218 is located in a multi-storybuilding. Based on the determination that the client device 218 islocated in a multi-story building, the translation module 216 maytranslate the elevation information by approximating the distancesbetween businesses located in the multi-story building, and thenconverting the approximated elevation information to an elevation valueindicative of the client device's elevation relative to the multi-storybuilding.

Alternatively, the detailed information field of the three-dimensionaltaxonomy record corresponding to the longitude and latitude of theclient device 208 may indicate that the multi-story building uses apredetermined distance between floors. Based on the predetermineddistance between floors, the translation module 216 may convert theapproximated elevation information to relative elevation valueindicative of the client device's 208 location within the multi-storybuilding.

Accordingly, the translated elevation information may indicate that theclient device 218 is located on the fourth floor of the multi-storybuilding. The processor 208 may then use the translated elevationinformation to further identify a three-dimensional taxonomy record thatcorresponds to the location of the client device 218.

In another implementation, the translation module 216 translates theelevation information received from the client device 218 to anelevation value stored in a three-dimensional taxonomy record. Forexample, the three-dimensional positional information may indicate thatthe client device 218 is located at latitude and longitude correspondingto a multi-story building, but the three-dimensional geographic locationinformation stored in the three-dimensional taxonomy record of themulti-story building indicates that a different mathematical model wasused to determine the elevation of the client device 218. Based on thedifferences between the mathematical model used to determine theelevation of the location and the mathematical model used to determinethe elevation of the client device 218, the translation module 216 thentranslates the elevation information of the client device 218 to anelevation value commensurate with the mathematical model used todetermine the elevation of the location. Based on the translatedelevation value, the processor 208 may then identify thethree-dimensional taxonomy record corresponding to three-dimensionalpositional information and the translated elevation information.

Following is a description of adding a new location to thethree-dimensional taxonomy database 214. While the description belowdescribes adding a new location, the three-dimensional taxonomy server102 may further permit modifications to the three-dimensional taxonomyrecords. Modifications may include modifications to thethree-dimensional taxonomy records or the data fields of thethree-dimensional taxonomy records. Examples of modifications includeadditions, deletions, edits, revisions, removals, or any other type ofmodifications.

In one implementation, a user provides three-dimensional geographiclocation information to the three-dimensional taxonomy server 102 for alocation via the client device 218. For example, the presentation accessmodule 212 may output a display for receiving input from the clientdevice 218. The display may be a form formatted based on the HypertextExtensible Markup Language (“HTML”) and may have one or more form fieldsfor receiving input from the user of the client device 218. The formfields may correspond to one or more of the three-dimensional taxonomyrecord fields for a three-dimensional taxonomy record. The user mayinput data, such as a name for the location/business/point of interest,an address, a longitude, a latitude, an elevation or relative elevation,or other data, into one or more of the form fields using the clientdevice 218.

Alternatively, the data for the three-dimensional taxonomy record may beautomatically provided by the client device 218. For example, when theclient device 218 communicates with the three-dimensional taxonomyserver 102, the client device 218 may automatically provide selectedthree-dimensional geographic location information, such as latitude,longitude, approximated elevation or relative elevation, an IP address,or other selected three-dimensional geographic location information.Moreover, the selected three-dimensional geographic location informationmay be provided along with user-provided three-dimensional geographiclocation information.

In yet another implementation, the presentation access module 212 mayoutput a graphical user interface displaying the environment near theclient device 218. The graphical user interface may be rendered as atwo-dimensional environment, a three-dimensional environment, or acombination of two- and three-dimensions.

When representing the environment in two dimensions, the graphical userinterface may include menu elements, such as buttons, drawing tools,clickable form fields, or other elements that assist the user inannotating or otherwise describing a location represented in thetwo-dimensional environment. For example, similar to the aforementionedform displayed as an HTML file, the graphical user interface may displaypredetermined elements that correspond to one or more of thethree-dimensional taxonomy record fields. By selecting or manipulatingthe predetermined elements, the user or the client device 218 mayprovide three-dimensional geographic location information about thelocation where the client device 218 is located. In one scenario, thismay be done via an augmented reality application.

Furthermore, when representing the environment in three dimensions, andin addition to displaying features shown in the two-dimensionalgraphical user interface, the graphical user interface may display agraphical environment that approximates the environment where the clientdevice 218 is located. Moreover, the three-dimensional graphical userinterface may represent the user or the client device 218 with anavatar, that is, a three-dimensional representation, within thethree-dimensional environment. The graphical user interface may permitthe user or the client device 218 to manipulate the avatar so as to movethe avatar about the three-dimensional environment. Using the avatar,the user or the client device 218 may then annotate or manipulate imagesshown in the three-dimensional environment to populate one or morethree-dimensional taxonomy record fields for a three-dimensionaltaxonomy record.

Although the graphical user interface may display a two- orthree-dimensional environment of where the client device 218 is located,the graphical user interface may also allow the user or the clientdevice 218 to display a different environment other than where theclient device 218 is located. Hence, the user or the client device 218may modify or add a three-dimensional taxonomy record for a locationother than the location of the user or the client device 218.

Moreover, while the description above references the presentation accessmodule 212 as displaying the HTML file and/or thetwo-dimensional/three-dimensional environment, the three-dimensionaltaxonomy server 102 may operate in conjunction with another server orcomputer that outputs the display to the user or client device 218. Forexample, the presentation access module 212 may facilitate access to thethree-dimensional taxonomy database 214 between the three-dimensionaltaxonomy server 102 and the other server or computer. Hence, thethree-dimensional taxonomy server 102 may be able to operate in unisonwith different types of servers and/or computers that are operative todisplay different types of graphical user interfaces to the user or theclient device 218.

Turning next to FIG. 4 is an illustration of one example of athree-dimensional geographic advertising system 402 in communicationwith the client device 218. The three-dimensional geographic advertisingsystem 402 includes the three-dimensional taxonomy server 102 and anadvertising server 404. The three-dimensional geographic advertisingsystem 402 is operative to deliver a targeted advertisement to theclient device 218 based on the three-dimensional positional informationtransmitted by the client device 218.

To deliver targeted advertisements to the client device 218, in oneimplementation, the advertising server 404 may include, or be incommunication an advertiser/keyword database 406 and akeyword/advertisement database 408.

In one implementation, the advertiser/keyword database 406 associateskeywords with advertisers. For example, the advertiser/keyword database406 may include one or more advertiser records that associate aparticular advertiser, or type of advertiser, with one or more keywords.An advertiser record may identify the particular advertiser “KentuckyFried Chicken” and associate this particular advertiser with thekeywords “chicken,” “fast food,” “restaurant,” or any other keyword.Alternatively, an advertiser record may identify a “fast foodrestaurant” as a type of advertiser and associate the “fast foodrestaurant” with the keywords “chicken,” “burger,” “fast food,”“restaurant,” or any other keyword. The advertiser/keyword database 406may also include a combination of advertiser-specific advertiser recordsand advertiser-type advertiser records.

In one implementation, the keyword/advertisement database 408 associateskeywords with advertisements. The keyword/advertisement database 408 mayinclude one or more advertisement records that associate one or morekeywords with the advertisements. Each of the keywords associated withthe advertisement may be selected based on their commonality with theadvertisement. For example, the keyword/advertisement database 408 mayinclude an advertisement record for a restaurant advertisementassociated with the keywords “restaurant,” “eatery,” “chicken,”“burger,” or any other keyword. As another example, thekeyword/advertisement database 408 may include an advertisement recordfor a razor advertisement associated with the keywords “razor,”“shaving,” “facial hair,” or any other keyword. Alternative oradditional types of advertisement records are also possible.

The advertisement referenced, or stored, by advertisement record may beany type of advertisement, such as a textual advertisement, a graphicaladvertisement, or a combination thereof. A textual advertisement mayinclude only text, a graphical advertisement may include only graphics,and a textual-graphical advertisement may include both graphics andtext. The advertising server 404 may be configured to deliver theadvertisement referenced, or stored, by the advertisement record as thetargeted advertisement to the client device 218.

FIG. 5 illustrates one example of message flow 502 for thethree-dimensional geographic advertising system 402. A client device 218may transmit a search query and the search query, or a portion thereof,may be transmitted to the advertising server 404 (504). The advertisingserver 404 may parse the search query to identify three-dimensionalpositional information embedded within, or transmitted with, the searchquery. Alternatively, the advertising server 404 may transmit a requestfor the three-dimensional positional information to the client device218 in response to receiving the search query or other query.

The three-dimensional taxonomy server 102 may then receive thethree-dimensional positional information from the client device 218 viathe advertising server 404 (506). When the three-dimensional positionalinformation is received, the processor 208, the presentation accessmodule 212, or other component of the three-dimensional taxonomy server102 may extract elevation information from the three-dimensionalpositional information. Depending on the elevation information extractedfrom the three-dimensional positional information, the translationmodule 216 may translate the elevation information (508). For example,the translation module 216 may translate the elevation information to anelevation value indicative of the client device's 218 elevation abovesea level, such as an elevation value of 1,000 feet above sea level.Alternatively, the translation module 216 may translate the elevationinformation to a relative elevation value indicative of the clientdevice's 218 elevation relative to a building, such as a relativeelevation value of being on the seventh floor of a building havingtwenty-one floors.

After performing a translation, the translation module 216 may thentransmit the translated elevation to the processor 208, or othercomponent, for selecting a three-dimensional taxonomy record from thethree-dimensional taxonomy database 214. The processor 208, or othercomponent, may identify a three-dimensional taxonomy recordcorresponding to the location of the client device 218 based on mappingthe elevation information of the client device 218 to thethree-dimensional geographic location information of a three-dimensionaltaxonomy record (510). For example, the processor 208 may map thethree-dimensional positional information, including the elevationinformation whether translated or not, to one or more fields of athree-dimensional taxonomy record.

Mapping the three-dimensional positional information may includecomparing values of the three-dimensional positional information,include the elevation information or translated elevation information,with values stored by one or more fields of a three-dimensional taxonomyrecord. In one implementation, the three-dimensional positionalinformation is mapped to the latitude three-dimensional taxonomy recordfield 310, the longitude three-dimensional taxonomy record field 312,and the floor three-dimensional taxonomy record field 314. Othermappings involving other fields, such as the elevation three-dimensionaltaxonomy record field 330, the IP address three-dimensional taxonomyrecord field 346, the address information three-dimensional taxonomyrecord field 308/324/340 are also possible.

In mapping the three-dimensional positional information, thethree-dimensional taxonomy server 102 may employ a margin of error toaccount for slight differences between the three-dimensional positionalinformation and the values stored by one or more fields of athree-dimensional taxonomy record. Alternatively, a field of athree-dimensional taxonomy record may include a range of values, and thethree-dimensional taxonomy record may be selected when thethree-dimensional positional information is contained within the rangeof the values stored in the three-dimensional taxonomy record field.

When the three-dimensional taxonomy server 102 has identified athree-dimensional taxonomy record having values equal to, similar to, orenclosing the three-dimensional positional information, thethree-dimensional taxonomy server 102 may extract the record identifier304/320/336 of the three-dimensional taxonomy record (512). The recordidentifier 304/320/336 may then be transmitted to the advertising server404 (514).

The advertising server 404 may then deliver a targeted advertisement tothe client device 218 based on the received record identifier304/320/336. The advertising server 404 may first use the recordidentifier 304/320/336 to select an advertiser record from theadvertiser/keyword database 406 (516). For example, an advertiser recordmay have an advertiser record field containing a value similar, orequal, to the record identifier 304/320/336. From the advertiser record,the advertising server 404 may extract one or more keywords associatedwith the advertiser identified by the record identifier 304/320/336.

After extracting one or more keywords from the selected advertiserrecord, these keywords may be passed to the keyword/advertisementdatabase 408 to select one or more advertisements from thekeyword/advertisement database 408 (518). The advertising server 404 mayidentify one or more advertising records as being associated with theselected keywords (520).

The advertisements associated with the advertising records may beselected as targeted advertisements for delivery to the client device218 (522). Alternatively, the advertising server 404 may use arefinement scheme to further identify an advertisement to deliver as atargeted advertisement. In one implementation, an advertiser mayinfluence when a targeted advertisement is displayed. For example, wherean advertiser has paid to be considered as a higher priority, theadvertising server 404 may select the advertisement of the payingadvertiser as the targeted advertisement. In another example, anadvertiser may arrange to have an advertisement displayed as a targetedadvertisement for a particular floor or range of floors. For example, anadvertisement stored on the advertising server 404 may indicate that itshould be displayed when the client device 218 is on the fourth floor orwhen the client device 218 is on the first through fifth floors.

In another implementation, the advertising server 404 may select anadvertisement in accordance with the direction of movement of the clientdevice 218. For example, the client device 218 may relay whether it ismoving in an upwardly or downwardly direction, such as when the clientdevice 218 is in an elevator. Based on the upward or downward directionof the client device 218, the advertising server 404 may select anadvertisement associated with a location or business on a floor that ison a floor higher or lower than the client device 218, depending on theupward or downward direction of the client device 218. Other refinementschemes are also possible.

Turning next to FIG. 6 is an illustration of one example of athree-dimensional geographic business search system 602 in communicationwith the client device 218. The three-dimensional geographic businesssearch system 602 includes the three-dimensional taxonomy server 102 anda business search server 604. The three-dimensional geographic businesssearch system 602 is operative to deliver a targeted search resultincluding at least one business to the client device 218 based on thethree-dimensional positional information transmitted by the clientdevice 218.

To deliver a targeted search result to the client device 218, in oneimplementation, the business search server 604 may include, or be incommunication a business/keyword database 608 and a result rankingorganizer 610.

In one implementation, the business/keyword database 608 associateskeywords with businesses. For example, the business/keyword database 608may include one or more business records that associate a particularbusiness, or type of business, with one or more keywords. An businessrecord may identify the particular business “Kentucky Fried Chicken” andassociate this particular business with the keywords “chicken,” “fastfood,” “restaurant,” or any other keyword. Alternatively, a businessrecord may identify a “fast food restaurant” as a type of business andassociate the “fast food restaurant” with the keywords “chicken,”“burger,” “fast food,” “restaurant,” or any other keyword. Thebusiness/keyword database 608 may also include a combination ofbusiness-specific business records and business-type business records.

In one implementation, the result ranking organizer 610 facilitates theorganization and ranking of search results. The result ranking organizer610 may include a mechanism for ranking a set of search results based ona previously determined set of criteria, such as a proximity to alocation, whether one of the businesses listed within the search resultshas paid for a higher position in the search results, whether a businessis more relevant to the initial search query that generated the set ofsearch results, or other criteria.

FIG. 7 illustrates one example of message flow 702 for thethree-dimensional geographic business search system 602. A client device218 may transmit a search query and the search query, or a portionthereof, may be transmitted to the business search server 604 (704). Thebusiness search server 604 may parse the search query to identifythree-dimensional positional information embedded within, or transmittedwith, the search query. Alternatively, the advertising server 604 maytransmit a request for the three-dimensional positional information tothe client device 218 in response to receiving the search query or otherquery.

The business search server 604 may then extract one or more keywordsfrom the search query to pass to the business/keyword database 608(706). After extracting one or more keywords from the search query,these keywords may be passed to the business/keyword database 608 toselect one or more business from the business/keyword database 608. Thebusiness search server 604 may identify one or more business records asbeing associated with the extracted keywords (708).

The three-dimensional taxonomy server 102 may then receive thethree-dimensional positional information from the client device 218 viathe business search server 604 (710). As previously discussed withreference to FIG. 5, when the three-dimensional positional informationis received, the three-dimensional taxonomy server 102 may extractelevation information from the three-dimensional positional information.(712). Depending on the elevation information extracted from thethree-dimensional positional information, the translation module 216 maytranslate the elevation information.

After obtaining translated elevation information (if applicable), thetranslation module 216 may then transmit the translated elevation to theprocessor 208, or other component, for selecting one or morethree-dimensional taxonomy records from the three-dimensional taxonomydatabase 214 (714).

In selecting the one or more three-dimensional taxonomy records from thethree-dimensional taxonomy database 214, the three-dimensional taxonomyserver 102 may use a range of values from the three-dimensionalpositional information. The three-dimensional taxonomy server 102 may beconfigured with one or more range values, such as a latitude rangevalue, a longitude range value, an elevation range value, or other rangevalues. The range values indicate the margin of error to use inselecting one or more three-dimensional taxonomy records. For example,an elevation range value of “15 feet” may indicate that thethree-dimensional taxonomy server 102 is to select three-dimensionaltaxonomy records whose elevation values fall within a range of +/−15feet of the elevation information from the three-dimensional positionalinformation. Hence, the range values facilitate the selection ofthree-dimensional taxonomy records corresponding to locations that arein proximity to the location of the client device 218.

After selecting the three-dimensional taxonomy records corresponding tolocations in proximity to the location of the client device 218, thethree-dimensional taxonomy server 102 may then refine the list ofselected three-dimensional taxonomy records based on the businesspreviously selected from the business/keyword database 608. For example,the three-dimensional taxonomy server 102 may select three-dimensionaltaxonomy records whose corresponding locations are analogous, orsimilar, to the businesses selected from the business/keyword database608. Alternatively, the three-dimensional taxonomy server 102 may usethe businesses selected from the business/keyword database 608 inconjunction with the three-dimensional positional information to selectthe three-dimensional taxonomy records from the three-dimensionaltaxonomy record database 214.

The three-dimensional taxonomy server 102 then communicates the selectedthree-dimensional taxonomy records to the result ranking organizer 610(716). The result ranking organizer 610 then engages in a ranking of thelocations corresponding to the three-dimensional taxonomy records. Aspreviously discussed, the result ranking organizer 610 may be configuredwith a set of criteria for ranking the locations. In one implementation,the locations are ranked according to proximity of the location of theclient device 218. A proximity-based criterion may include proximitybased on distance, wherein the distance is measured from the point ofthe client device 218 to the location. Distance-based proximity may ormay not account for convenience. A distance-based proximity thataccounts for convenience may include applying a weighting factor to thedistance of a location that is located on the same floor as the clientdevice 218. With the weighting factor, a first location located on thesame floor of the client device 218 may rank higher than a secondlocation that is on a floor above the client device 218, even if thedistance between the client device 218 and the second location is lessthan the distance between the client device 218 and the first location.Similarly, with reference to the aforementioned example, adistance-based proximity criterion that does not account for conveniencemay indicate that the second location is, in fact, closer to the clientdevice 218 than the first location.

Other types of ranking criterion are also possible. For example, inanother implementation, the result ranking organizer 610 ranks thelocations according to whether a business has paid to be ranked higherthan other businesses. In yet a further implementation, the locationsare ranked according to whether the location is related to the keywordsfrom the initial search query transmitted by the client device 218.

Moreover, the result ranking organizer 610 may employ multiple criteriato rank the list of locations. For example the result ranking organizer610 may first rank the locations according to proximity to the locationof the client device 218, and then a further ranking according towhether a location is related to, or relevant for, the keywords of theinitial query. Other types of ranking criteria are also possible. Theresult ranking organizer 610 then transmits the ranked list of locationsto the client device 218 via the business search server 604 (718). Intransmitting the ranked list of locations, the business search server604 may incorporate the ranked list of locations into a search resulttransmitted to the client device 218 in response to the initial searchquery from the client device 218. In an alternative implementation, theranked list of locations is transmitted as the search result to theclient device 218. Other schemes for transmitting the ranked list oflocations to the client device 218 are also possible.

In providing a search result of ranked or unranked locations, thebusiness search server 604 may employ a feedback loop to further refinethe search results transmitted to the client device 218. For example,the business search server 604 may transmit a request for the user orthe client device 218 to input a floor number on each search resultpage. The request transmitted to the client device 218 may include aninterface having a selectable element associated with one or more floornumbers, such as one or more drop-down boxes or one or more radiobuttons, along with a textual, graphical, or similar statement thatreads “To provide a better search result, we want to know which flooryou are currently on.” The user or the client device 218 may then useone or more selectable elements to select the floor on which the user orclient device 218 is located. Other forms of feedback loops, such asclick-monitoring, e.g., detecting which search result is selected morefrequently, or requests for additional searches, are also possible.

The systems, components, and logic described above may be implemented inmany different ways, including a combination of hardware and software,or as software for installation on any desired operating systemincluding Linux, UNIX, or Windows. The functionality may be implementedin a single system or functionally partitioned across multiple systems.As another example, the components, systems, and logic may beimplemented as computer-executable instructions or as data structures inmemory and may be stored on, distributed across, or read from manydifferent types of machine-readable media. The machine-readable mediamay include RAM, ROM, hard disks, floppy disks, CD-ROMs, flash memory orother machine-readable medium. The components, systems and logic mayalso be encoded in a signal, such as a signal received from a network orpartitioned into sections and received in multiple packets communicatedacross a network.

The systems may be implemented in software, hardware, or a combinationof software and hardware. The systems may be implemented in a computerprogramming language, such as C# or Java, or in a query language, suchas the SPARQL Protocol and RDF Query Language (“SPARQL”). The systemsmay also use one or more metadata data models, such as the ResourceDescription Framework (“RDF”).

Furthermore, the systems may be implemented with additional, different,or fewer components. As one example, a processor or any other logic orcomponent may be implemented with a microprocessor, a microcontroller, aDSP, an application specific integrated circuit (ASIC), programinstructions, discrete analog or digital logic, or a combination ofother types of circuits or logic. As another example, memories may beDRAM, SRAM, Flash or any other type of memory. The systems may bedistributed among multiple components, such as among multiple processorsand memories, optionally including multiple distributed processingsystems.

Logic, such as programs or circuitry, may be combined or split amongmultiple programs, distributed across several memories and processors,and may be implemented in or as a function library, such as a dynamiclink library (DLL) or other shared library. The DLL, for example, maystore code that implements functionality for a specific module as notedabove. As another example, the DLL may itself provide all or some of thefunctionality of the system.

Interfaces between the systems and the logic and modules within systemsmay be implemented in numerous ways. For example, interfaces betweensystems may be Web Services, Simple Object Access Protocol, orEnterprise Service Bus interfaces. Other examples of interfaces includemessage passing, such as publish/subscribe messaging, shared memory, andremote procedure calls.

Although aspects of the invention herein have been described withreference to particular embodiments, it is to be understood that theseembodiments are merely illustrative of the principles and applicationsof the present invention. It is therefore to be understood that numerousmodifications may be made to the illustrative embodiments and that otherarrangements may be devised without departing from the spirit and scopeof the invention as defined by the appended claims. Furthermore, whilecertain operations and functions are shown in a specific order, they maybe performed in a different order unless it is expressly statedotherwise.

1. A method for selecting an advertisement based upon a three-dimensionposition of a client device, the method comprising: determining, by oneor more processors, a location for the client device fromthree-dimensional position information of the client device;determining, by the one or more processors, a vertical direction ofmovement of the client device; identifying, by the one or moreprocessors, based on the vertical direction of movement, a businesshaving a three-dimensional geographic location proximate to the locationof the client device; and serving an advertisement for the identifiedbusiness to the client device; wherein determining the location for theclient device comprises translating an elevation component of thethree-dimensional position information to a relative elevation valueindicative of an elevation of the client device relative to a groundfloor of a building.
 2. The method of claim 1, wherein determining thelocation for the client device includes parsing a search query toidentify three-dimensional positional information embedded within ortransmitted with the search query.
 3. (canceled)
 4. The method of claim1, wherein the relative elevation value identifies a floor of thebuilding.
 5. The method of claim 1, wherein identifying the businesshaving the three-dimensional geographic location proximate to thelocation of the client device includes identifying the business fromamong one or more businesses having elevations that are within apredetermined distance from an approximate elevation for the clientdevice.
 6. The method of claim 5, wherein identifying the business fromamong the one or more businesses includes ranking the one or morebusinesses based on a weighted distance between the location of each ofthe one or more businesses and the location of the client device, wherethe weighting distance is based on whether each business is located on asame or a different floor as the client device.
 7. A non-transitorycomputer-readable recording medium having instructions stored thereon,the instruction, when executed by a processor, perform a method forselecting an advertisement based upon a three-dimension position of aclient device, the method comprising: determining a location for theclient device from three-dimensional position information of the clientdevice; determining a vertical direction of movement of the clientdevice; identifying, based on the vertical direction of movement, abusiness having a three-dimensional geographic location proximate to thelocation of the client device; and serving an advertisement for theidentified business to the client device; wherein determining thelocation for the client device comprises translating an elevationcomponent of the three-dimensional position information to a relativeelevation value indicative of an elevation of the client device relativeto a ground floor of a building.
 8. The non-transitory computer-readablerecording medium of claim 7, wherein determining the location for theclient device includes parsing a search query to identifythree-dimensional positional information embedded within or transmittedwith the search query.
 9. (canceled)
 10. The non-transitorycomputer-readable recording medium of claim 7, wherein the relativeelevation value identifies a floor of the building.
 11. Thenon-transitory computer-readable recording medium of claim 6, whereinidentifying the business having the three-dimensional geographiclocation proximate to the location of the client device includesidentifying the business from among one or more businesses havingelevations that are within a predetermined distance from an approximateelevation for the client device.
 12. The non-transitorycomputer-readable recording medium of claim 11, wherein identifying thebusiness from among the one or more businesses includes ranking the oneor more businesses based on a weighted distance between the location ofeach of the one or more businesses and the location of the clientdevice, where the weighting distance is based on whether each businessis located on a same or a different floor as the client device.
 13. Asystem for selecting an advertisement based upon a three-dimensionposition of a client device, the system comprising: a three-dimensionaltaxonomy server configured to: determine a location for the clientdevice from three-dimensional position information of the client device;determine a vertical direction of movement of the client device; andidentify, based on the vertical direction of movement, a business havinga three-dimensional geographic location proximate to the location of theclient device; and an advertising server configured to serve anadvertisement for the identified business to the client device; whereindetermining the location for the client device by the three-dimensionaltaxonomy server comprises translating an elevation component of thethree-dimensional position information to a relative elevation valueindicative of an elevation of the client device relative to a groundfloor of a building.
 14. The system of claim 13, wherein determining thelocation for the client device by the three-dimensional taxonomy serverincludes parsing a search query to identify three-dimensional positionalinformation embedded within or transmitted with the search query. 15.(canceled)
 16. The system of claim 1513, wherein the relative elevationvalue identifies a floor of the building.
 17. The system of claim 13,wherein identifying the business having the three-dimensional geographiclocation proximate to the location of the client device includesidentifying the business from among one or more businesses havingelevations that are within a predetermined distance from an approximateelevation for the client device.
 18. The system of claim 17, whereinidentifying the business from among the one or more businesses includesranking the one or more businesses based on a weighted distance betweenthe location of each of the one or more businesses and the location ofthe client device, where the weighting distance is based on whether eachbusiness is located on a same or a different floor as the client device.19. The method of claim 1, wherein translating the elevation componentto a relative elevation value is performed based on a data fields of oneor more three-dimensional taxonomy records of a three-dimensionaltaxonomy database.
 20. The method of claim 1, wherein translating theelevation component comprises approximating distances between selectedbusinesses located in a multi-story building.
 21. The method of claim 1,wherein translating the elevation component comprises: determiningwhether the client device is located in a multi-story building;determining whether the multi-story building uses a predetermineddistance between floors; and translating the elevation component to therelative elevation in accordance with the predetermined distance betweenfloors so that the relative elevation value is indicative of thelocation of the client device within the multi-story building.
 22. Themethod of claim 1, wherein translating the elevation component comprisestranslating elevation information received from the client device to anelevation value stored in a three-dimensional taxonomy record.